<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/vue.js"></script>
    <style>
        .show-book{
            width: 300px;
            margin-top: 10;
            font-size: 14px;
            line-height: 36px;
            background-color: grey;
            padding: 5px;
           

            .book-title{
                text-align: center;
                font-size: 20px;
                font-weight: bold;
            }

            .book-content{
                text-indent: 2em;
            }

            .book-footer{
                text-align: right;
            }


        }

    </style>
</head>
<body>
    <div id="app">
        <!-- <div class="color-change">
            <input type="color" v-model.lazy="color">  
            <span>{{color}}</span>
        </div>
        <div class="show-book" :style="{backgroundColor:color}">
            <div class="book-title">{{book.name}}</div>
            <div class="book-content">{{book.content}}</div>
            <div class="book-footer">{{book.author}}</div>
        </div> -->

        <!-- <lw-a></lw-a> -->
        <!-- <lw-b></lw-b> -->

        <lw-color-select></lw-color-select>
        <lw-book ref="book" :book="book"></lw-book>


    </div>
</body>
<script>
    /* 
        非父子组件通信 
            1.  同级组件(兄弟组件)
                可以依赖于共同的父组件进行通信, 父组件先将公共数据传递到两个组件(A B),如果组件A数据改变, 通知父组件改变数据, 父组件将改变后的数据更新到组件B

            2.  跨级组件通信
                (1)  $parent  $root  配合 $refs使用

                $parent  当前组件的父组件
                $root    根组件
                $children 当前组件的子组件  (不推荐使用,如果存在其他同级组件,且v-if控制不在渲染,组件下标可能发生改变)

                $refs   对应ref名获取元素或组件
                    获取元素时 => 返回原生DOM元素
                    获取组件时 => 返回组件Vue实例


    
    */

    let LwColorSelect = {
        data(){
            return {
                color:"#333333"
            }
        },
        template:`<div class="color-change">
            <input type="color" :value="color" @input="colorhandler">  
            <span>{{color}}</span>
        </div>`,
        methods:{
            colorhandler(e){
                this.color = e.target.value;


                // 找到 lw-book组件,直接修改它的color

                // console.log(this.$root.$children[1]);
                // this.$root.$children[1].color = e.target.value;

                this.$root.$refs.book.color = e.target.value;
            }
        },
        mounted () {
            // console.log("组件LwColorSelect",this);  // 当前组件
            // console.log("父组件",this.$parent);  // 当前组件的父组件
            // console.log("根组件",this.$root);  // 当前组件的根组件
            // console.log("根组件",this.$root.$children);  // 当前组件的根组件的子组件
        }
    }

    let LwBook = {
        props:["book"],
        data(){
            return {
                color:"#333333"
            }
        },
        template:`<div class="show-book" :style="{backgroundColor:color}">
            <div class="book-title">{{book.name}}</div>
            <div class="book-content">{{book.content}}</div>
            <div class="book-footer">{{book.author}}</div>
        </div>`,
    }

    var vm = new Vue({
        el:"#app",
        data:{
            color:"#333333",
            book:{
                name:"斗破苍穹",
                content:"《斗破苍穹》是网络作家天蚕土豆所著的系列长篇玄幻小说，首次在2009年4月14日于起点中文网连载，于2011年7月20日完结，首次由湖北少年儿童出版社于2014年5月4日出版。《斗破苍穹》的故事发生在一个充满“斗气”的大陆上，讲述了名为萧炎的少年，年少时被视为...详情",
                author:"天蚕土豆"
            }
        },
        components: {
            LwColorSelect,
            LwBook
        }
   })
</script>
</html>